rm(list = ls(all = TRUE))

library(readtext)
library(quanteda)
library(dplyr)
library(stringr)
library(ggplot2)
library(rworldmap)
library(RColorBrewer)
library(classInt)
library(vegan)
library(boot)
library(haven)
library(readxl)
library(texreg)
library(randomForest)
library(magrittr)
library(stm)
library(tidyverse)
library(tidytext)
require(stringi)
require(LSS)
quanteda_options(threads = 8)

DATA_DIR <-  "/Users/ALEX/Dropbox/Ja/NOW/Poslania/Analyses/ReplicationFiles/"

       
# post-soviet text corpus
sov_corpus <- readRDS("data/sov_corpus.RDS")  


                                
                                                             
#Tokenization and pre-processing
tok <- tokens(sov_corpus, what = "word",
              remove_punct = TRUE,
              remove_symbols = TRUE,
              remove_numbers = TRUE,
              remove_twitter = TRUE,
              remove_url = TRUE,
              remove_hyphens = TRUE,
              verbose = TRUE)
              
toks2 <- tokens_select(tok, c("[\\d-]", "[[:punct:]]", "^.{1}$"), 
                       selection = "remove", 
                    valuetype="regex", verbose = TRUE) 
                    
toks2 <- tokens_remove(toks2, stopwords("russian"), padding = TRUE)                     
                    

# remove common service words 
toks2 <- tokens_select(toks2, c("эт*", "котор*", "наш*", "год*", "сво*", "так", "также"), selection = "remove", padding = FALSE)
            
    
#DFM creation from tokens, removing stopwords, and stemming.
dfm <- dfm(toks2, 
           tolower = TRUE,
           remove=stopwords(language = "russian"),
           stem=TRUE, 
           verbose = TRUE)

           
topfeatures(dfm, n = 10)
topfeatures(dfm,100, decreasing=FALSE)


# stemming 
dfm2 <- dfm_wordstem(dfm, language = "russian")

  
         
topfeatures(dfm2, n = 50)
head(featnames(dfm2),50)
tail(featnames(dfm2),50)

dfm.trim2 <- dfm_trim(dfm2, min_termfreq = 25, min_docfreq = 10)
dfm2 <- dfm.trim2


#########################################################
###   ## descriptive tables
#########################################################


corpus.sum <- summary(sov_corpus, n = 304)
write.csv(corpus.sum, file = "TextAnalyses/results/allsummary.csv")

# summary table by year
summary.table <- summarise(group_by(corpus.sum,Year),
                           mean(Types),mean(Tokens),
                           mean(Sentences),min(Sentences),max(Sentences))
                           
write.csv(summary.table, file = "TextAnalyses/results/summary_year.csv")
    
                           
      # summary table by country
summary.table2 <- summarise(group_by(corpus.sum,Country), 
                           mean(Types),mean(Tokens),
                           mean(Sentences),min(Sentences),max(Sentences))                     
write.csv(summary.table2, file = "TextAnalyses/results/summary_country.csv")                           
                           
                   


   #########################################################
###   Communicative Strategies (LSS Scores) 
#########################################################



toks <- sov_corpus %>% 
    corpus_reshape("sentences") %>% 
    tokens(remove_punct = TRUE) %>% 
    tokens_remove(pattern = stopwords("ru", source = "snowball")) 
dfmt <- toks %>% 
    dfm(remove = "") %>% 
    dfm_select("^\\p{L}+$", valuetype = "regex", min_nchar = 2) %>% 
    dfm_trim(min_termfreq = 5)
    
dfm2 <- dfm_wordstem(dfmt, language = "russian")
dfmt <- dfm2




###   ## economy/performance

dict <- dictionary(file = "TextAnalyses/dictionary.yml")

lss <- textmodel_lss(dfmt, dict["economy"], cache = TRUE)

head(coef(lss), 100)

dfmt <- dfm_group(dfmt, sov_files$doc_id)
dat  <- docvars(dfmt)
dat$lss <- predict(lss, newdata = dfmt)
saveRDS(dat, "TextAnalyses/results/data_lss3.RDS")
lss <- dat
readr::write_csv(lss, "TextAnalyses/results/lss_econ.csv")



###   ## fight/intimidation 

lss <- textmodel_lss(dfmt, dict["fight"], cache = TRUE)

head(coef(lss), 100)

dfmt <- dfm_group(dfmt, sov_files$doc_id)
dat  <- docvars(dfmt)
dat$lss <- predict(lss, newdata = dfmt)
saveRDS(dat, "TextAnalyses/results/data_lss2.RDS")
lss <- dat
readr::write_csv(lss, "TextAnalyses/results/lss_fight.csv")


###   ## national and patriotic

lss <- textmodel_lss(dfmt, dict["national"], cache = TRUE)

head(coef(lss), 100)

dfmt <- dfm_group(dfmt, sov_files$doc_id)
dat  <- docvars(dfmt)
dat$lss <- predict(lss, newdata = dfmt)
saveRDS(dat, "TextAnalyses/results/data_lss3.RDS")
lss <- dat
readr::write_csv(lss, "TextAnalyses/results/lss_national.csv")







		
#########################################################
###   ## DICTIONARY ANALYSIS (Appendix)
#########################################################


dict_econ <- dictionary(list(econ = c("экономика", "экономич", "экономическ", "развит", "рост", "бюджет",  "купит",  "валюта", "долг", "депозит", "доллар", "евро", "кризис", "доход", "расход", "зарплата", "вклады", "продаж", "продавать", "торговля",  "торговать", "плата", "богат", "богатсво", "фонд", "финанс", "дорого", "страхов", "инвестиц", "инвестироват", "рынок", "рыночная", "деньги", "пенсия", "бедность", "цена", "цены", "рабоч", "продуктивность", "промышленность", "промышленная","индустрия", "труд", "завод", "фабрика", "инфляция", "сельское", "хозяйство", "аграрное", "аграри", "импорт", "экспорт", "тариф", "предпринимател","дефицит", "экономика", "экономику", "экономикой",  "экономический", "экономическая", "экономической", "экономические", "экономическим", "развитие", "развитием", "развитию", "развит", "развитые", "развитая", "рост", "росту", "росте", "ростет", "бюджет", "бюджету", "бюджете", "бюджетный", "бюджетная", "бюджетные", "бюджетным", "бюджетными", "купит", "купить", "купил", "купила", "купили", "покупатели", "покупатель", 
 "валюта",  "валюты",   "валютой",   "валютная", "валютной", "валютному", "валютным", "валютными", 
 "долг", "долгу", "долги",  "долговой", "долговая" , "долговые", "депозит", "депозиты", "депозитам", "доллар", "долларам", "долларами", "долларов", "долларовый", "евро", "кризис",  "кризисе", "кризису", "кризисный", "кризисная", "кризисные", "кризисным", "доход",  "доходам", "доходами", "доходный", "доходные", "доходным", "доходные", "расход",  "расходы",  "расходами",  "расходам", 
"зарплата", "зарплаты", "зарплатой", "вклады", "вкладам", "вкладами","продаж",  "продажа", "продажам", "продажей", "продажами",
"продавать", "торговля", "торговле",  "торговлю", "торговлей", "торговать", "плата", "богат", "богатый", "богатая", "богатые", "богатыми", "богатсво", "богатсве",  "фонд", "фонды",  "фонде", "фондам",  "фондами",
"финанс", "финансы", "финансам", "финансами", "финансовый", "финансовая", "финансовые", "финансовым","дорого", "страхов", "страхование", "страховать",
"инвестиц", "инвестиции", "инвестиция", "инвестициями", "инвестициям", "инвестироват", "инвестировать", "инвестировал", "инвестировали","рынок",  "рынки", "рынке", "рынку", "рынкам","рыночная", "рыночный", "рыночные", "рыночным", "деньги", "деньгам", "деньгами", "пенсия", "пенсии","бедность",  "бедности", "цена", "цены", "рабоч", "рабочие", "рабочая", "продуктивность", "продуктивности",  "промышленность", "промышленности","промышленная", "промышленный", "промышленные", "индустрия", "индустрией",
"труд", "завод", "заводы", "заводе", "заводан","фабрика",  "фабрики", "фабрикой", "фабрикам",
"инфляция", "инфляции", "инфляцией","сельское", "сельская", "сельские", "хозяйство", "хозяйстве", "хозяйства","аграрное", "аграрная", "аграрный","аграри", "импорт", "экспорт", "тариф", "тарифы","предпринимател", "предприниматели", "предпринимателам", "предпринимателей","дефицит", "дефиците")))

dict_fight <- dictionary (list(fight = c("авантюрист", "оппозиц", "антиобществен", "экстремист", "Подстрекател", "оппонент", "провокаци", "предатель", "враг", "политические_деятели", "Разжиган", "государственному_переворот", "циничн", "провоциру", "политические_игры", "внутриполитическими_противостояниями", "интриган", "жулик", "враждебн", "антипрезидент", "национал-предатель", "подавляющег_большинств", 
"деструктивным_силам", "зарубежным_хозяевам", "внешнее_вмешательство", "дестабилизиров", "приспешник", "внешних_сил", 
"пятую_колонну", "шарлатан", "антисистемн", "спекулируе", "раскол", "попытки_вмешательства", "пропаганда",  "клеветнич", 
"невежество", "опорочить", "подрывную_деятельность", "лживы", "бдительн", "террористы",  "террористу",  "террористам",  "террористами",  "террористах",  "террористический",  "террористическая",  "террористические",  "террористических",  "террористов", "экстремизм", "терроризм", 
"борьб", "террор", "подрыв", "подстрекател", "оппонент", "провокаци", "предатель", "враг",  "разжиган", "антипрезидент", "антигосударственн", "переворот", "кукловод", "циничн", "провоциру", "политические_игры",  "интриган", "жулик", "враждебн", "антипрезидент", "национал-предатель", "дестабилизиров", "приспешник", "внешних_сил", "пятую_колонну", "шарлатан", "антисистемн", "спекулируе", "подстрекатель", "подстрекатели", "подстрекателями", "подстрекателей", "оппоненты", "оппонентам", "провокация", "провокации", "провокацией", "провокационный", "провокационные", "предатели", "предателей", "предателям",  "предателями",  "предательский", "предательским", "враги", "врагу", "врагам", "врагаму", "вражеский", "вражеские", "вражеским", "разжигание", "антипрезидентский", "антипрезидентская", "антигосударственный", "антигосударственная", "антигосударственные", "антигосударственным", "кукловоды", "цинично", "циничный", "циничная", "провоцирует", "провоцировал", "провоцировали", "спровоцировали", "спровоцировал", "провокатор",  "провокаторы", "провокаторам",  "интриганы", "интриганам", "интриганов", "жулики", "жуликам", "жуликами", "жуликов", "враждебный", "враждебная", "враждебные", "враждебным", "враждебных", "деструктивный", "деструктивные", "деструктивная", "деструктивным", "деструктивных", "зарубежные_хозяева", "дестабилизировать", "дестабилизировал", "дестабилизировали", "дестабилизация", "приспешники", "приспешникам", "приспешниками", "приспешников", "шарлатаны", "шарлатанам", "шарлатанов", "антисистемный", "антисистемная", "антисистемные", "антисистемных", "антисистемным", "спекулирует", "спекулируют", "опорочил", "опорочили", "лживый", "лживая", "лживые", "лживым", "лживыми")))

dict_patriot <- dictionary (list(patriot = c("духовные", "духовн", "мораль", "патриотизм", "патриот", "родина", "единство", "моральные_критерии", "национальных_героев", "патриотический_дух" , "дух_народа", "единым_народ", "духовное_обновление", "духовной_деградации", "самобытным_народ", "моральное_очищение", 
"воспитания_молодого" , "аморальност", "наследия", "государственн_язык", "Родина", "Единство", "духовное_единство", "независимость", "традиционных_ценност",  "нравственност")))




#########################################################
###   ## sentiment dictionary
#########################################################

dict_positiv <- dictionary (list(positiv = c("захватывающий",    "ура",   "выдающийся",   "превосходный",   "восторг",   "Удивительно",   "удивительный",   "блестящая",   "экстатический",   "эйфории",   "буйный",   "сказочная",   "фантастическим",   "Чудо",   "радость",   "восторженный",   "радуйся",   "радовались",   "радуется",    "радость",   "потрясающий",   "потрясающий",   "Триумф",  "триумфальное",  "победа",  "победитель",  "победе",  
"победы",  "замечательным",  
"полюбоваться",  "восхищение",  "восхищается",  "восхищение",  "прелестный",  "обожают",  "обожаемого",  "обожает",  "любовь",  
"ласковый",  "развлечься",  "смешно",  "развлечения",  "развлечения",  "поражать",  "поражен",  "поразительно",  
"поражает",  "смелый",  "награда",  "награжден",  "награды",  "блаженным",  "красота",  "красивая",  "дорого",  "радость",  "рад",  "радуя",  "наслаждение",  "посвященных",  "приподнятом",  "восторг",  
"восхищать",  "восторг",  "энтузиазм",  "Эйфория",  "совершенство",  "превосходный",  "возбуждают",  "возбужденный",  
"вентилятор",  "очаровывать",  "очарованный",  "очаровывает",  "увлекательный",  "галантный",  "галантно",  "храбрость",  
"гениальным",  "рад",  "гламурный",  "гламурный",  "радость",  "радостный",  "хороший",  "доброта",  "добрый",  "великий",  
"благодарный",  "великий",  "большой",  "величайший",  "ха-ха",  "хахаха",  "счастье",  "счастливый",  "сердечные",  
"героической",  "впечатление",  "впечатляет",  "впечатляющие",  "вдохновляющим",  "радость",  "радостным",  
"радостно",  "радостный",  "ликующие",  "престижность",  "привлекательный",  "любовь",  "любил",  "красотки",  "прекрасный",  
"лояльных",  "верность",  "удача",  "счастливый",  "Чудо",  "чудесный",  "чудес",  "веселый",  "веселье",  
"веселым",   "хороший" ,"Рай",  "идеальное",  "отлично",  
"приятных",  "рад",  "удовольствие",  "популярная",  "хвала",  "похвалил",  "похвалы",  "хвалить",  "процветающей",  "сверкающий",  "великолепный",  "успешный",  "супер",  "яркий",  "бдительность",  "жизнеспособность",  "живой",  "богатство",    "выиграли",   "вкусное",  
"Способностей",  "способность",  "освобождают", "освобождаются", "освобождает", "освобождающий", "выполнить", 
"Опытным", "выполняет", "оправдать", "оправдал", "оправдан", "оправдания", "Преимущество", "преимуществами", 
"Приключение", "Приключения", "приятный", "поражать", "поражен", "поражает", "амбициозные", 
"Ценить", "оценили", "оценивает", "оценивая", "признательность", "утверждение", "утвержденный", 
"Утверждает", "поражен", "привлечение", "притяжение", "Достопримечательности", "энергичный", "поддержка", 
"Сделка", "выгода", "выгоды", "выгоду", "лучше", "Благослови", "благословляет", "веселый", 
"Смелый", "смело", "храбрый", "яркий", "оживленная", "плавучие", "спокойный", "успокоил", "успокаивающих", "успокаивается", "забота", 
"Осторожным", "внимательно", "заботится", "шанс", "шансы", "настроение", "приветствовали", "веселый", "ура", 
"Лелеять", "заветное", "греет", "лелеять", "шикарного", "уточняет", "ясность", "чистый", "чище", 
"Умный", "комфорт", "удобный", "утешительные", "комфорт", "воздать", "оценил", "обязательство", 
"Сострадательный", "компетентный", "конкурентные", "всеобъемлющий", "примирить", "мириться", "примиряет", 
"Согласие", "согласие", "праздничный", "мужество", "мужественный", "вежливый", "вежливость", 
"Уют", "творческая", "милая", "смелый", "бесстрашный", "дорогая", "веселый", "посвященных", 
"желательно", "желанный", "желающие", "определить", "стремится", "серьезный", "легкость", 
"Эффективный", "эффективно", "элегантная", "элегантно", "чуткие", "поощряют",
"Поощрение", "поощряет", "одобрить", "одобрено", "одобрение", "одобряет", "энергичный", "нравится", 
"Уважаемый", "этический", "раздраженный", "эксклюзивные", 
"Справедливой","выступает", "любимая", "бесстрашный", "горячий", "пылкий", 
"Праздничный", "прекрасно", "флагманские", "внимание", "любил", "любовь", "счастье", "свобода", "дружественный", "резвая", 
"Славного", "слава", "наслаждение", "привет", "рост", "приветствовали", "выносливые", "выносливый", 
"Честь", "заслуженный", "честь", "честь", "честь", "честь", "надежда", "надежда", "надеюсь", "надеется", 
"Надеясь", "объятие", "объятия", "юмор", "юмористическое", "юмор", "юмора", "бессмертные", "значение", "важно", 
"шутливое", "Шутка", "шутки", "веселый", "веселый", "справедливость", 
"Восторг", "восхищены", "восторг", "обнадеживает", 
"расслабленный", "полагаться", "облегчение", "освобождение", "наслаждается", "замечательный", "спасательные", "спас", 
"Спасает", "решительный", "уважаемый", "ответственный", 
"Отзывчивым", "спокойный", "почитаемые", "возрождение", "оживает", "награда", "вознагражден", "полезный", "награды", 
"Богатый", "надежный", "романтика", "удовлетворен", "сохранить", "сохранить", "безопасный", "обеспеченный", "обеспечивает", 
"Спокойный", "искренние", "искренне", "искренние", "искренность", "ловкий", "гладкий", "умнее", 
"Умных", "Улыбка", "улыбнулась", "улыбки", "улыбается", "твердый", "солидарность", "энергичный", 
"Бодрый", "выносливость", "стойкий", "стимулирование", "сила", "укрепление", 
"Укрепить", "укрепление", "укрепляет", "сильный", "сильный", "сильнейший", "учтивый", "успех", 
"Терпимым", "верхний", "вершины", "спокойный", "сокровище", "сокровища", "истинный", "доверенных", "беспристрастный", "непревзойденный", 
"принятый", "принятие", "принимает", "достижимыми", "активный", "Адекватный", "принятие", "принимает", "продвинутый", "согласен", "договорились", "соглашение", "согласен", "живым", "позволять", "Ожидание", "горячий", "привлекать", "привлекает", "привлекает", "власть", "ценные", "большой", "импульс", "Ясно", "очищает", 
"Убежден", "убеждает", "любопытный", "решающим", "желание", "алмаз", "Мечта", "мечты", "легкий", 
"Обнять",  
"вера", "слава", "чувство",  
"Простить", "прощайте", "свободный", "свежий", "бог", "благодать", "приветствую", 
"драгоценность", "присоединится", "острый", "смех", "смеялся", "смех", "смех", "смеется",  
"Достигать", "достиг", "достигает", "достижения", "успокоить", "успокоила", "заверяет", "снять", "освобождает", 
"безопасный", "безопасное", "безопасность", "важных", "значительный", "умный",
"сторонник", "сторонники", "поддержка", "доверие", "единое", "единый", "непревзойденный", 
"теплый", "причудливый", "желание", "желание", "желающих", "да")))


dict_negativ <- dictionary (list(negativ = c("ублюдок", "сволочь", "ублюдки", "сволочи", "сука", "суки", "шлюха", "проститутка", "жопа", "ебаный", "мудак", "фигня", "катастрофический", "проклятие", "проклятый", "залупа", "мошенник", "мошенники", "мошенничество", "обман", "наебалово", "мошеннический", "ебать", "ебаный", 
"ебонат", "ебонаты", "ебаный,", "ебаный", "ебанутый", "ад", "черт", "придурок", 
"придурки", "ссать", "ссаный", "изнасиловать", "насильник", "отморозок", "подонок", "дерьмо", "сраный", "мегера", "мучение", "измученный", "пытки", "пытать",  "ненавижу", "отвращение", "отвратительным", "злоупотребление", "злоупотребляют", "злоупотребления", "оскорбительным", 
"Желчный", "мучиться", "мучился", "мучительно", "мучиться", "мучительный", "мучается", "Мучительный", "гнев","гнев", "сердитый", "тоска", "мучительный", "апатичное", "апатия",  
"Арестованы", "убийство", "убийство", "ужасный", "плохо", "задира", "плохо", "банкрот", 
"Предал", "предательство", "предали", "предательство", "предает", "кровавый", "скучно", "взятка", 
"Катастрофой", "заряженный", "неприглядный", "наказывать", "наказанные", "наказывает", "наказывать", "обманывать", 
"Обманутых", "мошенник", "мошенники", "сговор", "заговор", "сокрытие", "дерьмо", "преступление", 
"Уголовное", "преступники", "кризис", "жестокий", "жестокость", "ущерб", "ущерб", "мертвые", "обман", "лживой", 
"Обмануть", "обмануть", "обманывают", "обманывают", "обман", "дефект", "дефекты", "отчаяние", "отчаянный", 
"отчаянная", "отчаянно", "унылый", "разрушить", "уничтожить", "уничтожение", "разрушает", 
"Уничтожение", "разрушительных", "умирать", "умер", "тяжелые", "страшный", "катастрофическое", "отвращение", 
"Отвращение", "отвратительный", "недоверие", "недоверчивых", "безработица", "придурок", "ужасный", 
"Немых", "тупица", "зло", "пидор", "педик", "хворост", "поддельный", "подделок", "подделка", "фальсифицированные", "фальсифицировать", 
"Погибших", "несчастье",  "преступления", "Фиаско", "безумие", "пугающий", "ярость", "Ужасный", "ужасный", "ужас", "униженных", "унижение", "истерия", "истерический", "истерика", "Идиот", "идиотский", "незаконный", "слабоумный", "разгневанный", "раздражение", "раздраженной", "раздражает", "рывок", "убить", "Убили", "убийство", "убивает", "лжец", "лжецы", "ненавижу", "ненавидел", "ненавидит", "ненависть", "свободный", "теряет", "Несчастным", "идиот", "убийство", "убийственный", "противный",  
"Неприятный", "возмущение", "возмущенные", "паника", "паника", "паника", "лжесвидетельство", "лженаука", 
"декламация", "пустослов", "крикунов", "тирады", "Скандал", "скандальные", 
"Скандалы", "эгоистичный", "эгоизм", "дерьмовая", "греховный", "рабство", "спамеров", "спамеров", 
"Сосать", "отстой", "мошенничество", "мошенничество", "мошенничество", "страшный", "ужасно", "страшно", "террор", 
"Терроризировать", "терроризировали", "терроризирует", "травма", "травматический", "измена", "предательский", "уродливые", "жертва", "Ухудшить", "ухудшилось", "ухудшение", "ухудшается", "худший", "гневных",  
"отказались", "отказывается", "похищенных", "Похищение", "похищение","обвинение", "обвинения", "обвинять", "обвиняют", "обвиняет", 
"Обвиняя", "Боль", "боль", "наставлять", "увещевали", "боюсь", "усугубить", "усугубляется",  
"Отчуждение", "аллергический", "враждебность", "раздражать", "раздражение", "раздражает", "раздражает", "раздражает", 
"Антагонистических", "тревога", "тревожный", "апокалиптические", "ужас", "ужасный", "опасаются", "арест", 
"Аресты", "высокомерный", "стыд", "неловко", "спасение", "надувать", "Унылый", "душить", "душили", "задыхается", "удушье", "Столкновение", "невежественный", "дерзкий", "принуждение", 
"Крах", "свернутый", "разрушается", "рушится", "столкновение", "столкновений", "самодовольным", "жаловаться", 
"Жаловались", "жалуется", "осудить", "осуждение", "осудил", "осуждает", "конфликт", 
"Конфликтный", "конфликты", "путать", "запутанной", "зараза", 
"Презрение", "презрительный", "презрительно", "спорными", "состязательный", "спорными", 
"Спорно",  "Трус", "трусливые", "крах", "сумасшедшим", "сумасшедшая", "сумасшедший", 
"Критиков", "измельченных", "плач", "Циник", "циничным", "цинизм", "опасность", "тупик", "смерть", 
"Отрицателей", "отрицает", "осудить", "осуждает", "отрицать", "отрицание", "депрессия", "угнетающей", "сорвать", "высмеивают", "высмеивают", "высмеивает", "высмеивать", "насмешка", "задерживать", "задержанный", 
"Задержание", "Сокрушение", "опустошил", "разрушительных", "грязные", "грязный", "грязные", 
"Недостаток", "обездоленных", "разочаровал", "разочарован", "разочарование", "разочарование", 
"Разочарований", "разочаровывает", "катастрофа", "бедствия", "верить", "безутешный",  
"Нечестные", "разочарованных", "склонен", "разрозненных", "неприязнь", "мрачный", "ужас", "расстройство", 
"Дезорганизованы", "дезориентирован", "унижать", "пренебрежительно", "унижает", "пренебрежительное", "недовольных", 
"Спор", "спорными", "споры", "спор", "дисквалифицировали", "беспокойство", "учитывать", 
"Игнорируя", "игнорирует", "неуважение", "разрушение", "сбои", "разрушительным", 
"Недовольных", "искажают", "искаженное", "искажает", "искажает", "отвлечься", 
"бедствие", "проблемными", "расстройства", "беспокойство", "беспокоить", "нарушенных", "нарушения", 
"Нарушает", "сглаживание", "уклонение", "изворотливым", "грустный", "гибель", "обречен", "опустив", 
"Унывать", "недостаток", "слить", "страх", "боялся", "бояться", "тоскливый", "висящие", "утопить", "утонул", 
"Тонет", "пьяный", "сомнительные", "безнадежный", "скучно", "бросила", "обманутый", "дисфункция", "жуткий", "жуткий", 
"Смущать", "смущение", "смущает", "неловко", "смущение", "озлобленного", "чрезвычайные", 
"Врагов", "враг", "скука", "Исступление", "ярость", "бесит", "порабощение", "порабощенных", "порабощает", 
"Завистливый", "ошибочное", "ошибка", "ошибки", "преувеличивать", "преувеличенные", "преувеличивает", "преувеличивают", 
"Исключены", "исчерпала", "изгнать", "изгнанный", "изгнание", "выгоняет", "эксплуатировать", "эксплуатируемых", "эксплуатации", 
"неудача", "провал", "сбой", "неудача", "неудачи", "малодушным", "упал", 
"Фашист", "фашисты", "усталость", "усталость", "усталость", "утомительно", "страх", "страшный", "боясь", 
"Страшный", "слабый", "беспокойный", "взволнованный", "дурак", 
"Хулиганов", "безнадежная", "безнадежность", "враждебные", "барыга", "голод", "больно", "больно", "больно", 
"Несовершенным", "импотент", "тюрьму", "неспособность", "бездействие", "недостаточный", "неспособный", "недееспособным", 
"Ярость", "некомпетентность", "некомпетентный", "невнимательный", "неудобство", "неудобная", "нерешительные", 
"Индоктринации", "неэффективные", "неэффективно", "нарушение", 
"Гнев", "ярость", "бесит", "бешенство", "ранен", "травма", "несправедливость", "инквизиция", 
"Безумным", "безумие", "небезопасно", "нечувствительным", "нечувствительность","пресным", "оскорбление", 
"Оскорбил", "оскорбительным", "оскорбление", "допрос", "прерывание", "прерванный", "прерывание", 
"Прерывание", "прерывания", "запугать", "запугать", "пугает", "запугивание", "запугивание", 
"Нерешительным", "зуд", "тюрьму", "ревнивый", "опасность", "безрадостное", "отсутствие", "вялый", "отстали", 
"Отстающих", "отстает", "хромой", "вялой", "вялость", "клеветническим", "солгал", "спорный", 
"Ярость", "лобби", "лоббирование", "одиноко", "одинокий", "мрачный", "бессмысленно", "тоска", "угроза", 
"Страдание", "опасение", "дезинформация", "дезинформировали", "неправильно", "недостоверной", 
"Искажение",  "пропустили", "ошибка", "ошибаться", "ошибки", "ошибиться", 
"Недоразумение", "недоразумением", "стон", "стонал", "стонать", 
"Стонет", "издевались", "насмешливые", "издевается", "разжигание", "монополизировать", "монополизировал", "монополизирует", 
"Монополизации", "скорбим", "плакал", "печальный", "скорбь", "скорбит", "Убийство", "убийца", 
"Убийства",  "наивные", "нуждающихся", "отрицательные", "отрицательность", "безнадзорность", "забытых", 
"Пренебрежение", "пренебрегает", "нервная", "нервно", "ерунда","пресловутый", 
"Уничтожить", "уничтожен", "непристойные", "устаревшим", "препятствие", "препятствия", "упрямая", "нечетное", "обидеть", 
"Обиженные", "преступник", "обидеть", "оскорбляет", "угнетенный", "репрессивной", "протест", 
"Переиграть", "чрезмерная", "реагирует", "перепроданности", "перепроданности", 
"упрощение", "упрощенным", "упрощает", "упрощать", "преувеличение", 
"Преувеличения", "Боль", "боль", "жалкая", "казнь", "опасность", "преступник", "виновные", 
"Недоумение", "преследовать", "преследовать", "преследует", "преследовать", "возмущенных", "противные", "пессимизм", 
"Пессимистические", "окаменелое", "фобические", "жалкий", "жалость", "яд", "отравленные", 
"Ядов", "загрязнять", "загрязненная", "загрязнитель", "загрязнители", "загрязняет", "бедный", "бедные", "бедных", 
"бессильный","давление", "тюрьма", "Заключенный", "заключенные", "проблема", 
"Проблемы", "спекулянт", "пропаганда", "преследование", "протест", "протестующие", "протест", "протесты", 
"Наказать", "наказать", "наказание", "карательной", "озадачил", "дрожащий", "сомнительные", "ярость", "яростный", 
"восстание", "рецессия", "безрассудным", "отказать", "отказались", "отказ", "сожаление", "сожаления", 
"Сожаление", "сожаление", "сожаление", "раскаяние", "отбиты", "обиженные", "беспокойные",  
"тормозят", "отсталый", "месть", "мстительным", 
"Бунт", "беспорядки", "Риск", "риск", "грабить", "разбойник","грабит", "разрушить", "разрушена", "губить", 
"Руины", "саботаж", "грустный", "печалить", "опечален", "саркастический", "афера", "мошенничество", "напугать", "боюсь", "страшный", "скептически", "бранить", "презрение", "презрительный", "Крик", "кричал", 
"Кричать", "Крики", "крамола", "крамольные", "самообман", "приговор", 
"Приговоры", "приговор", "шаткая", "стыд", "стыд", "позорный", "разрушена", "шок", "шокирован", 
"Шокирующим", "шоков", "близорукие", "близорукость", "дефицит", 
"Скептик", "скептически", "скептицизм", "скептики", "сократили", 
"бессонница", "вялый", "оскорбление", "пренебрежительно", "притормаживаний", "мрачный", 
"Печаль", "печальный", "спекулятивный", "бездуховной", "злобный", "удар", "зарезали", 
"Удары", "стойло", "тупик", "сваливание", "давка", "испуганный", "голодать", "голода", "голодает", "голодающие", 
"Украсть", "ворует", "стереотип", "стереотипных", "скупой", "украли", "задушен", "подчеркнул", "стресс", 
"Ошеломлены", "глупый", "тупо", "подрывную", "страдать", "страдание", "страдает", "суицидального", "самоубийство", "мрачный", "угрюмый", "подозрительными","ругаться", "ругается",  "Слезы", "напряженная", 
"спекулянтами", "трагедия", "трагическое", "ловушку", "пародия", 
"Дрожащей", "трепетный", "обманом", "обман", "беда", "проблемные", "неприятности", "опухоль", "неприемлемым", 
"Недооцененными", "несанкционированный", "неудобно", "равнодушно", "подорвать", "подорвала", 
"Подрывает", "подрыве", "нежелательным", "непростые", "безработица", "неэтичной", "несправедливый", 
"невыполненные", "несчастный", "нездоровый", "неразумные", "несправедливой", "непривлекательным", 
"Нелюбимых", "немотивированным", "непрофессионально", "неудовлетворенный", "необеспеченных", "простой", 
"Неустойчивые", "неподдерживаемых", "нежелательный", "недостойный", "расстроен", "расстраивает", "встревоженный", "бесполезный", "Ненужности", "смутный", "досада", "неприятный", "порочный", "нарушают", "нарушили", "нарушает", "нарушение", 
"Крушения", "неправильно", "обиженных", "противный", "фанатик", "фанатиками",  
"отсутствующих", "пострадавших", "страдающий", "оскорбленным", 
"Увы", "предупреждение", "амбивалентной", "анти", "извинения", "извинился", "извинение", "извинения", 
"Извинился", "извинение", "извинение", "атака", "напали", "атакует", "атаки", 
"избегать", "избегать", "избегает", "ожидает", "ожидается", "ожидает", "изгнать", 
"избиение", "предвзятость", "слепой", "сломался", 
"Сломанной", "отменить", "отменил", "отменить", "Отмена",  "осторожных", "проблема", "охлаждение", 
"столкновение", "столкновение", "столкновение", "заразной", "соперник", 
"Борющихся", "труп", "судороги", "Проклятие", "сокращений",  
"Требования",  "трудный", "Дилемма", "отключение", "исчезают", "исчезли", 
"Исчезает", "отбросить", "отбрасывается", "отбрасывание", "отбрасывает", "маскировку", "замаскированных", 
"Маскировка", "маскировка", "головокружение", "сомнение", "сомневается", "сомнительно", "сомневается", "сомнение", "сопротивление", "вытащили", "Тащит", "Падение", "свалка", "свалки", "пустота", "пустое", "зависть", "зависть", "зависть", "побег", "побег", 
"фарсом", "Борьба", "забытые", "безумный", "хмурый", "Похороны", 
"Скрывается", "выдуманные",  "манипуляции", "манипулирование", "манипуляция", "зло", "шалости", "оксюморон", "Парадокс", "пассивных", "пассивно", "скопления", "жалели", 
"Предотвращения", "предотвратить", "предотвращение", "мешает", "преследование", "преследование", "провоцируют", 
"Спровоцировали", "провоцирует", "провоцирующие",  "сомнение", "допросы","отклонить", "отклонен", 
"Отказ", "отвергает", "неустанный",  
"Извините", "подавил", "сдавленный", "Стоп", "остановилась", "остановка", "останавливается", "странными", "странным", "удар",  "Недооценивают", "недооценена", "недооценивает", "недооценки", "неравный", "нерешенные", 
"Срочные", "Приговор", "приговоры", "колеблющиеся")))


total_dfm <- dfm(toks2)

econ_dfm <- dfm_lookup(total_dfm, dict_econ, valuetype = "regex")
fight_dfm <- dfm_lookup(total_dfm, dict_fight, valuetype = "regex")
patriot_dfm <- dfm_lookup(total_dfm, dict_patriot, valuetype = "regex")
pos_dfm <- dfm_lookup(total_dfm, dict_positiv, valuetype = "regex")
neg_dfm <- dfm_lookup(total_dfm, dict_negativ, valuetype = "regex")

econ <- as.data.frame(econ_dfm)
fight <- as.data.frame(fight_dfm)
patriot <- as.data.frame(patriot_dfm)
pos <- as.data.frame(pos_dfm)
neg <- as.data.frame(neg_dfm)

DICT_counts <- left_join(econ, fight, by = "document")
DICT_counts <- left_join(DICT_counts, patriot, by = "document")
DICT_counts <- left_join(DICT_counts, pos, by = "document")
DICT_counts <- left_join(DICT_counts, neg, by = "document")

#total number of tokens per document
temp <- as.data.frame(ntoken(toks2))

temp$document <- row.names(temp)

DICT_counts <- left_join(DICT_counts, temp, by = "document")
DICT_counts <- plyr::rename(DICT_counts, c("ntoken(toks2)"= "total_size"))


#dictionary shares
DICT_counts$econ_share <- DICT_counts$econ/DICT_counts$total_size*100
DICT_counts$fight_share <- DICT_counts$fight/DICT_counts$total_size*100
DICT_counts$patriot_share <- DICT_counts$patriot/DICT_counts$total_size*100
DICT_counts$pos_share <- DICT_counts$pos/DICT_counts$total_size*100
DICT_counts$neg_share <- DICT_counts$neg/DICT_counts$total_size*100


readr::write_csv(DICT_counts, "TextAnalyses/results/DICT_counts.csv")


 ######################################################### 
  ##  SENTIMENT THROUGH YML DICT
 
 #########################################################
 
dict <- dictionary(file = "TextAnalyses/sentirus.yml")
summary(dict)

sent <- dfm(toks2, dictionary = dict)
sent_counts <- convert(sent, to = "data.frame")
sent_counts$freq <- ntoken(toks2)
sent_counts

readr::write_csv(sent_counts, "TextAnalyses/results/sentiment_counts.csv")   
 
 
 
 
 
#########################################################
##  Supplementary I UNGA  
#########################################################


## Load UNGD corpus ##

ungd_corpus <- readRDS("data/ungd_corpus.RDS")                   
                     
toks2 <- tokens(ungd_corpus,what = "word",
              remove_punct = TRUE,
              remove_symbols = TRUE,
              remove_numbers = TRUE,
              remove_twitter = TRUE,
              remove_url = TRUE,
              remove_hyphens = FALSE,
              verbose = TRUE, 
              include_docvars = TRUE)


toks2 <- tokens_select(toks2, c("[\\d-]", "^.{1}$"), 
                       selection = "remove", 
                    valuetype="regex", verbose = TRUE)


toks2 <- tokens_remove(toks2, stopwords("english"), padding = TRUE)
toks2 <- tokens(toks2, ngrams = 1:2)

#########################################################
###   ##  UNGA Scores Economy and Patriotism
#########################################################

dfm2 <- dfm(toks2, verbose = TRUE)

# stemming 
dfm2 <- dfm_wordstem(dfm2, language = "english")

#Dropping words that appear less than 50 times and in less than 25 documents.
dfm.trim <- dfm_trim(dfm2, min_termfreq = 50, min_docfreq = 25)
dfm2 <- dfm.trim


dfmt <- dfm2   
       
dict <- dictionary(file = "TextAnalyses/dictionary.yml")

lss <- textmodel_lss(dfmt, dict["economy2"], cache = TRUE)
dfmt <- dfm_group(dfmt, ungd_files$doc_id)
dat  <- docvars(dfmt)
dat$lss <- predict(lss, newdata = dfmt)
lss <- dat
lss2 <- textmodel_lss(dfmt, dict["nation2"], cache = TRUE)
dat$lss2 <- predict(lss2, newdata = dfmt)
lss2 <- dat


lss_all <- left_join(lss, lss2)
readr::write_csv(lss_all, "TextAnalyses/results/lss_all_un.csv")


#########################################################
###   ##  UNGA Text Sentiment
#########################################################


toks_lsd <- tokens_lookup(toks2, dictionary =  data_dictionary_LSD2015[1:2])
dfmat_lsd <- dfm(toks_lsd)

temp <- as.data.frame(ntoken(toks2))
temp$document <- row.names(temp)
lsd2 <- as.data.frame(dfmat_lsd)

lsd_counts <- left_join(lsd2, temp, by = "document")
lsd_counts <- plyr::rename(lsd_counts, c("ntoken(toks2)"= "total_size"))
lsd_counts <- lsd_counts %>%
  separate(document, c("Name", "Session", "Year"), "_")


readr::write_csv(lsd_counts, "TextAnalyses/results/lsd_counts_un.csv")





#########################################################
##  Supplementary II Russia All Texts Corpus  
#########################################################


## Load Russian corpus ##

rus_corpus <- readRDS("data/rus_corpus.RDS") 


#Tokenization and basic pre-processing
tok <- tokens(rus_corpus, what = "word",
              remove_punct = TRUE,
              remove_symbols = TRUE,
              remove_numbers = TRUE,
              remove_twitter = TRUE,
              remove_url = TRUE,
              remove_hyphens = TRUE,
              verbose = TRUE)
              
toks2 <- tokens_select(tok, c("[\\d-]", "[[:punct:]]", "^.{1}$"), 
                       selection = "remove", 
                    valuetype="regex", verbose = TRUE) 
                    
toks2 <- tokens_remove(toks2, stopwords("russian"), padding = TRUE)                     
                    

# omit the line below for us_me dictionary
toks2 <- tokens_select(toks2, c("эт*", "котор*", "наш*", "год*", "сво*", "так", "также"), selection = "remove", padding = FALSE)
            
    
 
#DFM creation from tokens, removing stopwords, and stemming.
dfm <- dfm(toks2, 
           tolower = TRUE,
           remove=stopwords(language = "russian"),
           stem=TRUE, 
           verbose = TRUE)

           
topfeatures(dfm, n = 10)
topfeatures(dfm,100, decreasing=FALSE)


# stemming 
dfm2 <- dfm_wordstem(dfm, language = "russian")

 



   #########################################################
###   ## Communicative Stategies Scores
#########################################################


toks <- rus_corpus %>% 
    corpus_reshape("sentences") %>% 
    tokens(remove_punct = TRUE) %>% 
    tokens_remove(pattern = stopwords("ru", source = "snowball")) 
dfmt <- toks %>% 
    dfm(remove = "") %>% 
    dfm_select("^\\p{L}+$", valuetype = "regex", min_nchar = 2) %>% 
    dfm_trim(min_termfreq = 5)
    
# with or without stemming
dfm2 <- dfm_wordstem(dfmt, language = "russian")
dfmt <- dfm2


###   ## economy/performance

dict <- dictionary(file = "TextAnalyses/dictionary.yml")

lss <- textmodel_lss(dfmt, dict["economy"], cache = TRUE)

head(coef(lss), 100)

dfmt <- dfm_group(dfmt, sov_files$doc_id)
dat  <- docvars(dfmt)
dat$lss <- predict(lss, newdata = dfmt)
lss <- dat
readr::write_csv(lss, "TextAnalyses/results/lss_econ_rus.csv")



###   ## intimidation/fight

lss <- textmodel_lss(dfmt, dict["fight"], cache = TRUE)

head(coef(lss), 100)

dfmt <- dfm_group(dfmt, sov_files$doc_id)
dat  <- docvars(dfmt)
dat$lss <- predict(lss, newdata = dfmt)
lss <- dat
readr::write_csv(lss, "TextAnalyses/results/lss_fight_rus.csv")




###   ## patriotism/nation

lss <- textmodel_lss(dfmt, dict["national"], cache = TRUE)

head(coef(lss), 100)

dfmt <- dfm_group(dfmt, sov_files$doc_id)
dat  <- docvars(dfmt)
dat$lss <- predict(lss, newdata = dfmt)
lss <- dat
readr::write_csv(lss, "TextAnalyses/results/lss_nation_rus.csv")


### end


